#ifndef DIFFWRAPPER_H
#define DIFFWRAPPER_H

//enum DIFFSTATUS
//{
//    eLeftMissingNL = 1, /**< Left file is missing EOL before EOF */
//    eRightMissingNL = 2, /**< Right file is missing EOL before EOF */
//    eBinaries = 4, /**< Files are binaries */
//    eIdentical = 8, /**< diffutils said files are identical */
//    ePatchFileFailed = 16 /**< Creating patch file failed */
//};
//
///**
// * @brief Diffutils options.
// */
//struct DIFFOPTIONS
//{
//	int nIgnoreWhitespace; /**< Ignore whitespace -option. */
//	bool bIgnoreCase; /**< Ignore case -option. */
//	bool bIgnoreBlankLines; /**< Ignore blank lines -option. */
//	bool bIgnoreEol; /**< Ignore EOL differences -option. */
//	bool bFilterCommentsLines; /**< Ignore Multiline comments differences -option. */
//};
//
//class DiffWrapper
//{
//public:
//	DiffWrapper();
//	~DiffWrapper();
//	void SetCreatePatchFile(const QString &filename);
//	void SetCreateDiffList(DiffList *diffList);
//	void SetDiffList(DiffList *diffList);
//	void GetOptions(DIFFOPTIONS *options);
//	void SetOptions(const DIFFOPTIONS *options);
//	void SetTextForAutomaticPrediff(const QString &text);
//	void SetPrediffer(PrediffingInfo * prediffer =NULL);
//	void GetPrediffer(PrediffingInfo * prediffer);
//	void SetPatchOptions(const PATCHOPTIONS *options);
//	void SetDetectMovedBlocks(BOOL bDetectMovedBlocks);
//	bool GetDetectMovedBlocks() { return (m_pMovedLines != NULL); }
//	bool SetAppendFiles(BOOL bAppendFiles);
//	void SetPaths(const String &filepath1, const String &filepath2, BOOL tempPaths);
//	void SetAlternativePaths(const String &altPath1, const String &altPath2);
//	void SetCodepage(int codepage) { m_codepage = codepage; }
//	bool RunFileDiff();
//	void GetDiffStatus(DIFFSTATUS *status);
//	void AddDiffRange(UINT begin0, UINT end0, UINT begin1, UINT end1, BYTE op);
//	void FixLastDiffRange(int leftBufferLines, int rightBufferLines, BOOL left);
//	MovedLines * GetMovedLines() { return m_pMovedLines; }
//	void SetCompareFiles(const String &OriginalFile1, const String &OriginalFile2);
//	void SetFilterList(LPCTSTR filterStr);
//	void EnablePlugins(bool enable);
//
//protected:
//	QString FormatSwitchString();
//	bool Diff2Files(struct change ** diffs, DiffFileData *diffData, int * bin_status, int * bin_file);
//	void LoadWinMergeDiffsFromDiffUtilsScript(struct change * script, const file_data * inf);
//	void WritePatchFile(struct change * script, file_data * inf);
//	bool RegExpFilter(int StartPos, int EndPos, int FileNo);
//
//private:
//	DiffutilsOptions m_options;
//	DIFFSTATUS m_status; /**< Status of last compare */
//	FilterList * m_pFilterList; /**< List of linefilters. */
//	String m_s1File; /**< Full path to first diff'ed file. */
//	String m_s2File; /**< Full path to second diff'ed file. */
//	String m_s1AlternativePath; /**< First file's alternative path (may be relative). */
//	String m_s2AlternativePath; /**< Second file's alternative path (may be relative). */
//	String m_sOriginalFile1; /**< First file's original (NON-TEMP) path. */
//	String m_sOriginalFile2; /**< Second file's original (NON-TEMP) path. */
//	CString m_sPatchFile; /**< Full path to created patch file. */
//	BOOL m_bPathsAreTemp; /**< Are compared paths temporary? */
//	/// prediffer info are stored only for MergeDoc
//	PrediffingInfo * m_infoPrediffer;
//	/// prediffer info are stored only for MergeDoc
//	String m_sToFindPrediffer;
//	BOOL m_bUseDiffList; /**< Are results returned in difflist? */
//	BOOL m_bCreatePatchFile; /**< Do we create a patch file? */
//	BOOL m_bAddCmdLine; /**< Do we add commandline to patch file? */
//	BOOL m_bAppendFiles; /**< Do we append to existing patch file? */
//	int m_nDiffs; /**< Difference count */
//	int m_codepage; /**< Codepage used in line filter */
//	DiffList *m_pDiffList; /**< Pointer to external DiffList */
//	MovedLines * m_pMovedLines;
//	FilterCommentsManager * m_FilterCommentsManager; /**< Comments filtering manager */
//	bool m_bPluginsEnabled; /**< Are plugins enabled? */
//};


#endif // DIFFWRAPPER_H
